Methods and processors for controlling steering of self-driving car

ABSTRACT

A method and processor for training a Machine Learning Algorithm (MLA) for predicting steering wheel positions for controlling steering of a Self-Driving Car (SDC). The method comprises: acquiring a plurality of training data sets a given one of which including (i) a training input and (ii) a respective label, the training input being indicative of (i) a training target state and (ii) a second target state, the respective label being indicative of an actual steering wheel position at a respective moment in time for arriving from the training target state to a sequential target state of a training trajectory; and inputting the given training data set into the MLA for determining a predicted steering wheel position for arriving from the training target state at the respective moment in time to the sequential target state while taking into account that the training trajectory is to end with the second target state.

CROSS-REFERENCE

The present application is a continuation of U.S. patent applicationSer. No. 17/060,397, filed on Oct. 1, 2020, and entitled “METHODS ANDPROCESSORS FOR CONTROLLING STEERING OF SELF-DRIVING CAR”, which claimspriority Russian Patent Application No. 2019145038, filed Dec. 30, 2019,entitled “METHODS AND PROCESSORS FOR CONTROLLING STEERING OFSELF-DRIVING CAR”, both of which are incorporated herein by reference intheir entireties.

FIELD OF TECHNOLOGY

The present technology relates to self-driving cars and, specifically,to a method and a processor for controlling steering of a Self-DrivingCar (SDC).

BACKGROUND

Several computer based navigation systems that are configured for aidingnavigation and/or control of vehicle have been proposed and implementedin the prior art. These systems range from more basic map-aidedlocalization based solutions—i.e. use of a computer system to assist adriver in navigating a route from a starting point to a destinationpoint; to more complex ones—computer-assisted and/or driver-autonomousdriving systems.

Some of these systems are implemented as what is commonly known as a“cruise control” system. Within these systems, the computer systemboarded on the vehicles maintains a user-set speed of the vehicle. Someof the cruise control system implement an “intelligent distance control”system, whereby the user can set up a distance to a potential car infront (such as, select a value expressed in a number of vehicles) andthe computer system adjusts the speed of the vehicle at least in partbased on the vehicle approaching the potential vehicle in front withinthe pre-defined distance. Some of the cruise control systems are furtherequipped with collision control system, which systems upon detection ofthe vehicle (or other obstacle) in front of the moving vehicle, slowdown or stop the vehicle.

Some of the more advanced system provide for a fully autonomous drivingof the vehicle without direct control from the operator (i.e. thedriver), so-called Self-Driving Cars (SDCs). A given SDC includescomputer systems that can cause the SDC to accelerate, break, stop,change lane and self-park.

One of the technical challenges in implementing the above computersystems is planning a SDC trajectory with respect to an obstacle(another vehicle, for example) the SDC may face while driving. Anotherone of the technical challenges in implementing the above computersystems is determining how to steer the SDC so that the SDC actuallyfollows the so-planned trajectory for avoiding the obstacle.

SUMMARY

It is an object of the present technology to ameliorate at least some ofthe inconveniences present in the prior art. Embodiments of the presenttechnology may provide and/or broaden the scope of approaches to methodsof achieving the aims and objects of the present technology.

Developers of the present technology have appreciated at least onetechnical problem associated with the prior art approaches. Developersof the present technology have realized that controlling steering of aSelf-Driving Car (SDC) encompasses at least two main problems. Firstly,controlling steering of the SDC is technically challenging since thesteering profile of the SDC must result in a trajectory that aids intransitioning from a first pre-determined state of the SDC to a nextpre-determined state of the SDC. However, in addition to that, even if agiven steering profile does result in a trajectory that allows the SDCto transition form the first pre-determined state of the SDC to the nextpre-determined state of the SDC, the steering profile may encompasssteering wheel positions that are either too dangerous to perform inreal-life situations or outside the permissible range of steering wheelpositions that the SDC is physically able to have.

In a first broad aspect of the present technology, there is provided acomputer-implemented method of controlling steering of a Self-DrivingCar (SDC). The SDC is communicatively coupled to a processor. The SDChas a pre-determined range of steering wheel positions that arephysically possible for the SDC. The method is executable by theprocessor. The method comprises acquiring, by the processor from amemory, SDC state data associated with two sequential vertices in agraph-structure. Vertices of the graph-structure define a series oftarget states of the SDC on a route. A first of the two sequentialvertices defines a first target state of the SDC along the route. Asecond of the two sequential vertices defines a second target state ofthe SDC along the route. The method comprises using, by the processor,the SDC state data for acquiring a set of parameters for building apolynomial curve. The polynomial curve is representative of a candidatesteering profile of the SDC for attempting to transition from the firsttarget state to the second target state. The candidate steering profilerepresents a plurality of candidate steering wheel positions for the SDCat respective moments in time between (i) a moment in time associatedwith the first target state and (ii) a moment in time associated withthe second target state. At least one candidate steering wheel positionfrom the plurality of candidate steering wheel positions is anon-allowed steering wheel position. The non-allowed steering wheelposition is outside the pre-determined range of steering wheel positionsof the SDC. The method comprises using, by the processor, the polynomialcurve for simulating a candidate trajectory of the SDC as if the SDC issteered in accordance with the plurality of candidate steering wheelpositions at the respective moments in time, and such that a closestallowed steering wheel position to the non-allowed steering wheelposition in the pre-determined range of steering wheel positions is usedinstead of the non-allowed steering wheel position. The candidatetrajectory (i) begins at the first target state of the SDC and (ii)terminates at a simulated state of the SDC. The method comprisesdetermining, by the processor, an offset between the simulated state ofthe SDC and the second target state of the SDC. The method comprises inresponse to the offset being below a pre-determined threshold,selecting, by the processor, the candidate steering profile as a targetsteering profile of the SDC. The method comprises using, by theprocessor, the target steering profile of the SDC for controllingsteering of the SDC when the SDC is in the first target state.

In some embodiments of the method, prior to the acquiring the SDC statedata, the method further comprises generating, by the processor, thegraph-structure for the route that the SDC is to undertake.

In some embodiments of the method, the memory is a memory of a remoteserver.

In some embodiments of the method, the set of parameters is acquiredfrom the memory.

In some embodiments of the method, the memory is configured to storerespective sets of parameters for respective pairs of sequentialpre-determined SDC states.

In some embodiments of the method, the SDC state data associated with agiven state of the SDC comprises a plurality of state values.

In some embodiments of the method, each of the plurality of state valuescomprises at least: a position value, a time value, a vehicleorientation value, and a steering position value.

In some embodiments of the method, the set of parameters comprises atleast four parameters.

In some embodiments of the method, the set of parameters comprises atleast one parameter being indicative of a total amount of steeringmovement.

In some embodiments of the method, the polynomial curve is built as apolynomial function of a third degree.

In some embodiments of the method, the pre-determined range of steeringwheel positions is indicative of a maximum amplitude of steering thatthe SDC is physically configured to perform.

In some embodiments of the method, the method further comprisescomparing, by the processor, the offset against the pre-determinedthreshold.

In some embodiments of the method, the offset is below thepre-determined threshold when the simulated state of the SDC matches thesecond target state of the SDC.

In some embodiments of the method, in response to the offset being abovethe pre-determined threshold, the method further comprises performing,by the processor, an adjustment procedure. The adjustment procedurecomprises using, by the processor, the offset for adjusting the set ofparameters, thereby determining a set of adjusted parameters forbuilding an adjusted polynomial curve. The adjusted polynomial curve isrepresentative of an adjusted steering profile for the SDC forattempting to transition from the first target state to the secondtarget state. The adjustment procedure comprises using, by theprocessor, the adjusted polynomial curve for simulating a secondcandidate trajectory of the SDC as if the SDC is steered in accordancewith the adjusted steering profile. The second candidate trajectory (i)begins at the first target state of the SDC and (ii) terminating at asecond simulated state of the SDC. The adjustment procedure comprisesdetermining, by the processor, a second offset between the secondsimulated state of the SDC and the second target state of the SDC. Theadjustment procedure comprises in response to the second offset beingbelow the pre-determined threshold, selecting, by the processor, theadjusted steering profile as the target steering profile for the SDC.

In some embodiments of the method, the method further comprisesiteratively repeating, by the processor, the adjustment procedure untila given offset is below the pre-determined threshold.

In some embodiments of the method, the method further comprises using,by the server, (i) the first target state, (ii) the second target state,and (iii) the target steering profile of the SDC to train a MachineLearning Algorithm (MLA) to predict an in-use steering wheel positionfor the SDC for a current in-use state of the SDC while taking intoaccount that an in-use trajectory of the SDC is to end at a secondin-use target state.

In a second broad aspect of the present technology, there is provided amethod of training a Machine Learning Algorithm (MLA) for predictingsteering wheel positions for controlling steering of a Self-Driving Car(SDC). The SDC is communicatively coupled to a processor. The method isexecutable by the processor. The method comprises acquiring, by theprocessor, a plurality of training data sets associated with a trainingtrajectory of the SDC. The training trajectory has a plurality of targetstates of the SDC. The plurality of target states includes (i) a firsttarget state of the SDC, (ii) a set of intermediary target states, and(iii) a second target state of the SDC. The target trajectory (i) beginswith the SDC being in the first target state, (ii) continues with theSDC being sequentially in the set of intermediary target states, and(iii) ends with the SDC being in the second target state. The trainingtrajectory is associated with a plurality of actual steering wheelpositions at different moments in time. A given actual steering wheelposition at a given moment in time is for arriving from a given targetstate of the training trajectory to a sequential target state of thetraining trajectory. A given one of the plurality of training data setsincludes (i) a training input and (ii) a respective label. The traininginput is indicative of (i) a training target state and (ii) the secondtarget state. The training target state is at least one of (i) the firsttarget state and (ii) one of the plurality of intermediary targetstates. The respective label is indicative of the actual steering wheelposition at a respective moment in time for arriving from the trainingtarget state to the sequential target state of the training trajectory.The method comprises inputting, by the processor, the given trainingdata set into the MLA for determining a predicted steering wheelposition for arriving from the training target state at the respectivemoment in time to the sequential target state while taking into accountthat the training trajectory is to end with the second target state. Themethod comprises determining, by the processor, a difference between thepredicted steering wheel position for the training target state and theactual steering wheel position for the training target state. The methodcomprises training, by the processor, the MLA based on the difference topredict an in-use steering wheel position for the SDC for a currentin-use state of the SDC while taking into account that an in-usetrajectory of the SDC is to end at a second in-use target state.

In some embodiments of the method, the inputting comprises iterativelyinputting, by the processor, respective training data sets from theplurality of training data sets into the MLA for determining respectivepredicted steering wheel positions. The training comprises iterativelytraining, by the processor the MLA based on differences between therespective predicted steering wheel positions and respective actualsteering wheel positions.

In some embodiments of the method, the plurality of actual steeringwheel positions associated with the training trajectory are in a form ofa steering profile for the training trajectory. The steering profile hasbeen built by the processor as a polynomial curve representative of agiven steering profile of the SDC that allows the SDC to transition fromthe first target state to the second target state.

In some embodiments of the method, the training trajectory and theactual steering wheel positions associated therewith have been gatheredby a device associated with one of: (i) a vehicle during operationthereof by a human driver (ii) a training SDC.

In some embodiments of the method, the plurality of target states of thetraining trajectory are selected for avoiding an obstacle, and where thetraining input is further indicative of a position of the obstacle.

In some embodiments of the method, the training input is indicative ofthe first target state, the one of the plurality of intermediary targetstates, and the second target state.

In some embodiments of the method, the training input is furtherindicative of at least one of a position of a center of a lane on whichthe optimal trajectory is located.

In some embodiments of the method, the MLA is implemented as a RecurrentNeural Network (RNN) having an internal state, and wherein the traininginput is further indicative of a preceding target state to the one ofthe plurality of intermediary target states.

In a third broad aspect of the present technology, there is provided aprocessor for training a Machine Learning Algorithm (MLA) for predictingsteering wheel positions for controlling steering of a Self-Driving Car(SDC). The processor is configured to acquire a plurality of trainingdata sets associated with a training trajectory of the SDC. The trainingtrajectory has a plurality of target states of the SDC. The plurality oftarget states includes (i) a first target state of the SDC, (ii) a setof intermediary target states, and (iii) a second target state of theSDC. The target trajectory (i) begins with the SDC being in the firsttarget state, (ii) continues with the SDC being sequentially in the setof intermediary target states, and (iii) ends with the SDC being in thesecond target state. The training trajectory is associated with aplurality of actual steering wheel positions at different moments intime. A given actual steering wheel position at a given moment in timeis for arriving from a given target state of the training trajectory toa sequential target state of the training trajectory. A given one of theplurality of training data sets includes (i) a training input and (ii) arespective label. The training input is indicative of (i) a trainingtarget state and (ii) the second target state. The training target stateis at least one of (i) the first target state and (ii) one of theplurality of intermediary target states. The respective label isindicative of the actual steering wheel position at a respective momentin time for arriving from the training target state to the sequentialtarget state of the training trajectory. The processor is configured toinput the given training data set into the MLA for determining apredicted steering wheel position for arriving from the training targetstate at the respective moment in time to the sequential target statewhile taking into account that the training trajectory is to end withthe second target state. The processor is configured to determine adifference between the predicted steering wheel position for thetraining target state and the actual steering wheel position for thetraining target state. The processor is configured to train the MLAbased on the difference to predict an in-use steering wheel position forthe SDC for a current in-use state of the SDC while taking into accountthat an in-use trajectory of the SDC is to end at a second in-use targetstate.

In some embodiments of the processor, to input comprises the processorconfigured to iteratively input respective training data sets from theplurality of training data sets into the MLA for determining respectivepredicted steering wheel positions, and where to train comprises theprocessor configured to iteratively train the MLA based on differencesbetween the respective predicted steering wheel positions and respectiveactual steering wheel positions.

In some embodiments of the processor, the plurality of actual steeringwheel positions associated with the training trajectory are in a form ofa steering profile for the training trajectory, the steering profilehaving been built by the processor as a polynomial curve representativeof a given steering profile of the SDC that allows the SDC to transitionfrom the first target state to the second target state.

In some embodiments of the processor, the training trajectory and theactual steering wheel positions associated therewith have been gatheredby a device associated with one of: (i) a vehicle during operationthereof by a human driver (ii) a training SDC.

In some embodiments of the processor, the plurality of target states ofthe training trajectory are selected for avoiding an obstacle, andwherein the training input is further indicative of a position of theobstacle.

In some embodiments of the processor, the training input is indicativeof the first target state, the one of the plurality of intermediarytarget states, and the second target state.

In some embodiments of the processor, the training input is furtherindicative of at least one of a position of a center of a lane on whichthe optimal trajectory is located.

In some embodiments of the processor, the MLA is implemented as aRecurrent Neural Network (RNN) having an internal state, and wherein thetraining input is further indicative of a preceding target state to theone of the plurality of intermediary target states.

In the context of the present specification, a “server” is a computerprogram that is running on appropriate hardware and is capable ofreceiving requests (e.g. from client devices) over a network, andcarrying out those requests, or causing those requests to be carriedout. The hardware may be implemented as one physical computer or onephysical computer system, but neither is required to be the case withrespect to the present technology. In the present context, the use ofthe expression a “server” is not intended to mean that every task (e.g.received instructions or requests) or any particular task will have beenreceived, carried out, or caused to be carried out, by the same server(i.e. the same software and/or hardware); it is intended to mean thatany number of software elements or hardware devices may be involved inreceiving/sending, carrying out or causing to be carried out any task orrequest, or the consequences of any task or request; and all of thissoftware and hardware may be one server or multiple servers, both ofwhich are included within the expression “at least one server”.

In the context of the present specification, “electronic device” is anycomputer hardware that is capable of running software appropriate to therelevant task at hand. In the context of the present specification, theterm “electronic device” implies that a device can function as a serverfor other electronic devices and client devices, however it is notrequired to be the case with respect to the present technology. Thus,some (non-limiting) examples of electronic devices include personalcomputers (desktops, laptops, netbooks, etc.), smart phones, andtablets, as well as network equipment such as routers, switches, andgateways. It should be understood that in the present context the factthat the device functions as an electronic device does not mean that itcannot function as a server for other electronic devices. The use of theexpression “an electronic device” does not preclude multiple clientdevices being used in receiving/sending, carrying out or causing to becarried out any task or request, or the consequences of any task orrequest, or steps of any method described herein.

In the context of the present specification, “client device” is anycomputer hardware that is capable of running software appropriate to therelevant task at hand. In the context of the present specification, ingeneral the term “client device” is associated with a user of the clientdevice. Thus, some (non-limiting) examples of client devices includepersonal computers (desktops, laptops, netbooks, etc.), smart phones,and tablets, as well as network equipment such as routers, switches, andgateways It should be noted that a device acting as a client device inthe present context is not precluded from acting as a server to otherclient devices. The use of the expression “a client device” does notpreclude multiple client devices being used in receiving/sending,carrying out or causing to be carried out any task or request, or theconsequences of any task or request, or steps of any method describedherein.

In the context of the present specification, the expression“information” includes information of any nature or kind whatsoevercapable of being stored in a database. Thus information includes, but isnot limited to audiovisual works (images, movies, sound records,presentations etc.), data (location data, numerical data, etc.), text(opinions, comments, questions, messages, etc.), documents,spreadsheets, etc.

In the context of the present specification, the expression “softwarecomponent” is meant to include software (appropriate to a particularhardware context) that is both necessary and sufficient to achieve thespecific function(s) being referenced.

In the context of the present specification, the expression “computerinformation storage media” (also referred to as “storage media”) isintended to include media of any nature and kind whatsoever, includingwithout limitation RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, harddrivers, etc.), USB keys, solid state-drives, tape drives, etc. Aplurality of components may be combined to form the computer informationstorage media, including two or more media components of a same typeand/or two or more media components of different types.

In the context of the present specification, a “database” is anystructured collection of data, irrespective of its particular structure,the database management software, or the computer hardware on which thedata is stored, implemented or otherwise rendered available for use. Adatabase may reside on the same hardware as the process that stores ormakes use of the information stored in the database or it may reside onseparate hardware, such as a dedicated server or plurality of servers.

In the context of the present specification, the words “first”,“second”, “third”, etc. have been used as adjectives only for thepurpose of allowing for distinction between the nouns that they modifyfrom one another, and not for the purpose of describing any particularrelationship between those nouns. Thus, for example, it should beunderstood that, the use of the terms “first database” and “thirdserver” is not intended to imply any particular order, type, chronology,hierarchy or ranking (for example) of/between the server, nor is theiruse (by itself) intended imply that any “second server” must necessarilyexist in any given situation. Further, as is discussed herein in othercontexts, reference to a “first” element and a “second” element does notpreclude the two elements from being the same actual real-world element.Thus, for example, in some instances, a “first” server and a “second”server may be the same software and/or hardware components, in othercases they may be different software and/or hardware components.

Implementations of the present technology each have at least one of theabove-mentioned object and/or aspects, but do not necessarily have allof them. It should be understood that some aspects of the presenttechnology that have resulted from attempting to attain theabove-mentioned object may not satisfy this object and/or may satisfyother objects not specifically recited herein.

Additional and/or alternative features, aspects and advantages ofimplementations of the present technology will become apparent from thefollowing description, the accompanying drawings and the appendedclaims.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features, aspects and advantages of the presenttechnology will become better understood with regard to the followingdescription, appended claims and accompanying drawings where:

FIG. 1 depicts a schematic diagram of an example computer system forimplementing certain embodiments of systems and/or methods of thepresent technology.

FIG. 2 depicts a networked computing environment suitable for use withsome implementations of the present technology.

FIG. 3 depicts a graph-structure stored within the networked computingenvironment of FIG. 2 , in accordance with at least some embodiments ofthe present technology.

FIG. 4 depicts representations of two sequential target states of avehicle in the graph-structure of FIG. 3 , in accordance with at leastsome embodiments of the present technology.

FIG. 5 depicts polynomial-generation data in a form of a table storedwithin the networked computing environment of FIG. 2 , in accordancewith at least some embodiments of the present technology.

FIG. 6 depicts a graphical representation of a polynomial curvegenerated by a processor of the computer system of FIG. 1 , inaccordance with at least some embodiments of the present technology.

FIG. 7 depicts a pre-determined range of steering wheel positions andthe a graphical representation of a polynomial curve of FIG. 6 .

FIG. 8 depicts a candidate trajectory generated by the processor of FIG.1 based on the polynomial curve of FIG. 6 .

FIG. 9 depicts a training trajectory and a plurality of training datasets for training a Machine Learning Algorithm (MLA) executed within thenetworked computing environment of FIG. 2 , in accordance with at leastsome embodiments of the present technology.

FIG. 10 depicts a representation of an in-use phase of the MLA beingexecuted in a plurality of incremental steps, in accordance with atleast some embodiments of the present technology.

FIG. 11 is scheme-block diagram of a method of controlling steering ofthe vehicle within the networked environment of FIG. 2 , in accordancewith at least some embodiments of the present technology.

DETAILED DESCRIPTION

The examples and conditional language recited herein are principallyintended to aid the reader in understanding the principles of thepresent technology and not to limit its scope to such specificallyrecited examples and conditions. It will be appreciated that thoseskilled in the art may devise various arrangements which, although notexplicitly described or shown herein, nonetheless embody the principlesof the present technology and are included within its spirit and scope.

Furthermore, as an aid to understanding, the following description maydescribe relatively simplified implementations of the presenttechnology. As persons skilled in the art would understand, variousimplementations of the present technology may be of a greatercomplexity.

In some cases, what are believed to be helpful examples of modificationsto the present technology may also be set forth. This is done merely asan aid to understanding, and, again, not to define the scope or setforth the bounds of the present technology. These modifications are notan exhaustive list, and a person skilled in the art may make othermodifications while nonetheless remaining within the scope of thepresent technology. Further, where no examples of modifications havebeen set forth, it should not be interpreted that no modifications arepossible and/or that what is described is the sole manner ofimplementing that element of the present technology.

Moreover, all statements herein reciting principles, aspects, andimplementations of the technology, as well as specific examples thereof,are intended to encompass both structural and functional equivalentsthereof, whether they are currently known or developed in the future.Thus, for example, it will be appreciated by those skilled in the artthat any block diagrams herein represent conceptual views ofillustrative circuitry embodying the principles of the presenttechnology.

Similarly, it will be appreciated that any flowcharts, flow diagrams,state transition diagrams, pseudo-code, and the like represent variousprocesses which may be substantially represented in computer-readablemedia and so executed by a computer or processor, whether or not suchcomputer or processor is explicitly shown.

The functions of the various elements shown in the figures, includingany functional block labelled as a “processor”, may be provided throughthe use of dedicated hardware as well as hardware capable of executingsoftware in association with appropriate software. When provided by aprocessor, the functions may be provided by a single dedicatedprocessor, by a single shared processor, or by a plurality of individualprocessors, some of which may be shared.

Moreover, explicit use of the term “processor” or “controller” shouldnot be construed to refer exclusively to hardware capable of executingsoftware, and may implicitly include, without limitation, digital signalprocessor (DSP) hardware, network processor, application specificintegrated circuit (ASIC), field programmable gate array (FPGA),read-only memory (ROM) for storing software, random access memory (RAM),and non-volatile storage. Other hardware, conventional and/or custom,may also be included.

Software modules, or simply modules which are implied to be software,may be represented herein as any combination of flowchart elements orother elements indicating performance of process steps and/or textualdescription. Such modules may be executed by hardware that is expresslyor implicitly shown.

With these fundamentals in place, we will now consider some non-limitingexamples to illustrate various implementations of aspects of the presenttechnology.

Computer System

Referring initially to FIG. 1 , there is depicted a computer system 100suitable for use with some implementations of the present technology,the computer system 100 comprising various hardware components includingone or more single or multi-core processors collectively represented byprocessor 110, a solid-state drive 120, a memory 130, which may be arandom-access memory or any other type of memory. Communication betweenthe various components of the computer system 100 may be enabled by oneor more internal and/or external buses (not shown) (e.g. a PCI bus,universal serial bus, IEEE 1394 “Firewire” bus, SCSI bus, Serial-ATAbus, etc.), to which the various hardware components are electronicallycoupled.

In at least some embodiments of the present technology, the solid-statedrive 120 stores program instructions suitable for being loaded into thememory 130 and executed by the processor 110 for determining a presenceof an object. For example, the program instructions may be part of avehicle control application executable by the processor 110.

In at least some embodiments of the present technology, it iscontemplated that the computer system 100 may have additional and/oroptional components, such as a network communication module 140 forcommunication, via a communication network (for example, a communicationnetwork 240 depicted in FIG. 2 ) with other electronic devices and/orservers, localization modules (not depicted), and the like.

Networked Computer Environment

FIG. 2 illustrates a networked computer environment 200 suitable for usewith some embodiments of the systems and/or methods of the presenttechnology. The networked computer environment 200 comprises anelectronic device 210 associated with a vehicle 220, or associated witha user (not depicted) who can operate the vehicle 220, a server 235 incommunication with the electronic device 210 via the communicationnetwork 240 (e.g. the Internet or the like, as will be described ingreater detail herein below). Optionally, the networked computerenvironment 200 can also include a GPS satellite (not depicted)transmitting and/or receiving a GPS signal to/from the electronic device210. It will be understood that the present technology is not limited toGPS and may employ a positioning technology other than GPS. It should benoted that the GPS satellite can be omitted altogether.

The vehicle 220, with which the electronic device 210 is associated, maycomprise any leisure or transportation vehicle such as a private orcommercial car, truck, motorbike or the like. The vehicle may be useroperated or a driver-less vehicle. It should be noted that specificparameters of the vehicle 220 are not limiting, these specificparameters including: vehicle manufacturer, vehicle model, vehicle yearof manufacture, vehicle weight, vehicle dimensions, vehicle weightdistribution, vehicle surface area, vehicle height, drive train type(e.g. 2× or 4×), tyre type, brake system, fuel system, mileage, vehicleidentification number, and engine size.

The implementation of the electronic device 210 is not particularlylimited, but as an example, the electronic device 210 may be implementedas a vehicle engine control unit, a vehicle CPU, a vehicle navigationdevice (e.g. TomTom™, Garmin™), a tablet, and a personal computer builtinto the vehicle 220 and the like. Thus, it should be noted that theelectronic device 210 may or may not be permanently associated with thevehicle 220. Additionally or alternatively, the electronic device 210can be implemented in a wireless communication device such as a mobiletelephone (e.g. a smart-phone or a radio-phone). In certain embodiments,the electronic device 210 has a display 270.

The electronic device 210 may comprise some or all of the components ofthe computer system 100 depicted in FIG. 1 . In certain embodiments, theelectronic device 210 is on-board computer device and comprises theprocessor 110, solid-state drive 120 and the memory 130. In other words,the electronic device 210 comprises hardware and/or software and/orfirmware, or a combination thereof, for determining a trajectory of thevehicle 220 at a given road segment considering obstacles therein, aswill be described in greater detail below.

Sensor System

In the non-limiting embodiments of the present technology, theelectronic device 210 comprises or has access to a sensor system 230.According to these embodiments, the sensor system 230 may comprise aplurality of sensors allowing for various implementations of the presenttechnology. Examples of the plurality of sensors include but are notlimited to: cameras, LIDAR sensors, and RADAR sensors, etc. The sensorsystem 230 is operatively coupled to the processor 110 for transmittingthe so-captured information to the processor 110 for processing thereof,as will be described in greater detail herein below.

The sensor system 230 can be mounted on an interior, upper portion of awindshield of the vehicle 220, but other locations are within the scopeof the present disclosure, including on a back window, side windows,front hood, rooftop, front grill, or front bumper of the vehicle 220. Insome non-limiting embodiments of the present technology, the sensorsystem 230 can be mounted in a dedicated enclosure (not depicted)mounted on the top of the vehicle 220.

Further, the spatial placement of the sensor system 230 can be designedtaking into account the specific technical configuration thereof,configuration of the enclosure, weather conditions of the area where thevehicle 220 is to be used (such as frequent rain, snow, and otherelements) or the like.

In the non-limiting embodiments of the present technology, the sensorsystem 230 may comprise a sensor configured to capture an image of asurrounding area 250. In this regard the sensor system 230 may be acamera or a plurality thereof (not separately depicted).

How the camera is implemented is not particularly limited. For example,in one specific non-limiting embodiments of the present technology, thecamera can be implemented as a mono camera with resolution sufficient todetect objects at pre-determined distances of up to about 30 m (althoughcameras with other resolutions and ranges are within the scope of thepresent disclosure).

In some embodiments of the present technology, the camera (or one ormore cameras that make up the implementation of the sensor system 230)is configured to capture a pre-determine portion of the surrounding area250 around the vehicle 220. In some embodiments of the presenttechnology, the camera is configured to capture an image (or a series ofimages) that represent approximately 90 degrees of the surrounding area250 around the vehicle 220 that are along a movement path of the vehicle220.

In other embodiments of the present technology, the camera is configuredto capture an image (or a series of images) that represent approximately180 degrees of the surrounding area 250 around the vehicle 220 that arealong a movement path of the vehicle 220. In yet additional embodimentsof the present technology, the camera is configured to capture an image(or a series of images) that represent approximately 360 degrees of thesurrounding area 250 around the vehicle 220 that are along a movementpath of the vehicle 220 (in other words, the entirety of the surroundingarea around the vehicle 220).

In a specific non-limiting example, the camera can be of the typeavailable from FLIR Integrated Imaging Solutions Inc., 12051 RiversideWay, Richmond, BC, V6 W 1K7, Canada. It should be expressly understoodthat the camera can be implemented in any other suitable equipment.

In the non-limiting embodiments of the present technology, the sensorsystem 230 may further comprise a LIDAR instrument (not separatelydepicted). Lidar stands for LIght Detection and Ranging. It is expectedthat a person skilled in the art will understand the functionality ofthe LIDAR instrument, but briefly speaking, a transmitter (not depicted)of the LIDAR sends out a laser pulse and the light particles (photons)are scattered back to a receiver (not depicted) of the LIDAR instrument.The photons that come back to the receiver are collected with atelescope and counted as a function of time. Using the speed of light(˜3×10⁸ m/s), the processor 110 can then calculate how far the photonshave travelled (in the round trip). Photons can be scattered back off ofmany different entities surrounding the vehicle 220, such as otherparticles (aerosols or molecules) in the atmosphere, other card,stationary objects or potential obstructions in front of the vehicle220.

In a specific non-limiting example, the LIDAR instrument comprised inthe sensor system 230 can be implemented as the LIDAR based sensor thatmay be of the type available from Velodyne LiDAR, Inc. of 5521 HellyerAvenue, San Jose, CA 95138, United States of America. It should beexpressly understood that the LIDAR instrument can be implemented in anyother suitable equipment.

In some embodiments of the present technology, the LIDAR instrumentcomprised in the sensor system 230 can be implemented as a plurality ofLIDAR based sensors, such as three, for example, or any other suitablenumber.

In the non-limiting embodiments of the present technology, the sensorsystem 230 may further comprise a RAdio Detection And Ranging (RADAR)instrument (not separately depicted). Briefly speaking, the RADARinstrument is a detection instrument using radio waves to determine arange, angle and/or velocity of objects. The RADAR instrument includes atransmitter producing electromagnetic waves, an antenna used fortransmitting and receiving electromagnetic waves, a receiver, and aprocessor to determine properties of the detected objects.

In alternative embodiments of the present technology, there may be aseparate antenna for receiving waves, and a separate antenna fortransmitting waves. The processor used for determining properties ofsurrounding objects may be the processor 110.

In some embodiments of then present technology, the RADAR instrumentused in the sensor system 230 may comprise long-range, medium-range andshort-range RADAR sensors. As a non-limiting example, the long-rangeRADAR sensor may be used for adaptive cruise control, automaticemergency braking, and forward collision warning, while the medium andshort-range RADAR sensors may be used for park assist, cross-trafficalert, junction assist, and blind side detection.

In a specific non-limiting example, the RADAR instrument comprised inthe sensor system 230 may be of the type available from Robert BoschGmbH of Robert-Bosch-Platz 1, 70839 Gerlingen, Germany. It should beexpressly understood that the RADAR instrument can be implemented in anyother suitable equipment.

In some non-limiting embodiments of the present technology, the sensorsystem 230 may be used, by the processor 110, for image calibration. Forexample, using an image captured by the camera and the LIDAR point cloudcaptured by the LIDAR instrument, the processor 110 is configured toidentify a given region of the image to correspond to a given region ofthe LIDAR point cloud captured by the LIDAR instrument. In otherembodiments of the present technology, the sensor system 230 arecalibrated such that for the image captured by the camera, the LIDARpoint cloud captured by the LIDAR instrument, and the RADAR datacaptured by the RADAR instrument, the processor 110 is configured toidentify a given region of the image to correspond to a given region ofthe LIDAR point cloud and the RADAR data.

In the non-limiting embodiments of the present technology, the vehicle220 further comprises or has access to other sensors (not separatelydepicted). The other sensors include one or more of: an inertialmeasurement unit (IMU), a Global Navigation Satellite System (GNSS)instrument, ground speed RADARs, ultrasonic SONAR sensors, odometrysensors including accelerometers and gyroscopes, mechanical tiltsensors, magnetic compass, and other sensors allowing operation of thevehicle 220.

As a non-limiting example, the IMU may be fixed to the vehicle 220 andcomprise three gyroscopes and three accelerometers for providing data onthe rotational motion and linear motion of the vehicle 220, which may beused to calculate motion and position of the vehicle 220.

Communication Network

In some embodiments of the present technology, the communication network240 is the Internet. In alternative non-limiting embodiments, thecommunication network 240 can be implemented as any suitable local areanetwork (LAN), wide area network (WAN), a private communication networkor the like. It should be expressly understood that implementations ofthe communication network 240 are for illustration purposes only. How acommunication link (not separately numbered) between the electronicdevice 210 and the communication network 240 is implemented will dependinter alia on how the electronic device 210 is implemented. Merely as anexample and not as a limitation, in those non-limiting embodiments ofthe present technology where the electronic device 210 is implemented asa wireless communication device such as a smartphone or a navigationdevice, the communication link can be implemented as a wirelesscommunication link. Examples of wireless communication links include,but are not limited to, a 3G communication network link, a 4Gcommunication network link, and the like. The communication network 240may also use a wireless connection with a server 235.

Server

In some embodiments of the present technology, the server 235 isimplemented as a conventional computer server and may comprise some orall of the components of the computer system 100 of FIG. 1 . In onenon-limiting example, the server 235 is implemented as a Dell™PowerEdge™ Server running the Microsoft™ Windows Server™ operatingsystem, but can also be implemented in any other suitable hardware,software, and/or firmware, or a combination thereof. In the depictednon-limiting embodiments of the present technology, the server is asingle server. In alternative non-limiting embodiments of the presenttechnology (not shown), the functionality of the server 235 may bedistributed and may be implemented via multiple servers.

In some non-limiting embodiments of the present technology, theprocessor 110 of the electronic device 210 can be in communication withthe server 235 to receive one or more updates. The updates can be, butare not limited to, software updates, map updates, routes updates,weather updates, and the like.

In some embodiments of the present technology, the processor 110 canalso be configured to transmit to the server 235 certain operationaldata, such as routes travelled, traffic data, performance data, and thelike. Some or all data transmitted between the vehicle 220 and theserver 235 may be encrypted and/or anonymized.

Storage

In FIG. 2 , there is also depicted a storage 250 communicatively coupledto the server 235. In some embodiments, however, the storage 250 may becommunicatively coupled to the electronic device 210 and/or may beimplemented within the electronic device 210 and/or may becommunicatively coupled to any other processor of the networked computerenvironment 200.

In at least some embodiments, it is contemplated that the storage 250may be used by the server 235, the electronic device 210 and/or anyother processor of the network computer environment 200 as a memorydevice for storing information. The storage 250 is configured to tostore information extracted, determined and/or generated by theprocessor 110 of the server 235 and/or the electronic device 210.Generally speaking, the storage 250 may receive data from the processor110 which was generated by the processor 110 during processing fortemporary and/or permanent storage thereof and may provide stored datato the processor 110 for use thereof. It is contemplated that thestorage 250 may be split into several distributed storages, forproviding a fault-tolerant storage system for example, without departingfrom the scope of the present technology.

It should be noted that in at least some embodiments of the presenttechnology, the storage 250 may be implemented locally on the electronicdevice 210 and/or the server 235 (such as on a local memory, forexample). It is also contemplated however that the storage 250 may beimplemented remotely from the electronic device 210 and/or the server235 (such as on a remote memory, for example).

In some embodiments of the present technology, the storage 250 may beconfigured to store a graph-structure 300 depicted in FIG. 3 . Broadlyspeaking, the graph-structure 300 comprises a plurality of verticeswhere each vertex represents time and variables defining a plurality oftarget states of the vehicle 220.

As it will become apparent from the description herein further below,the processor 110 may be configured to generate the graph-structure 300for a given route that the vehicle 220 is to undertake, and where arespective vertex of the graph-structure 300 defines a respective targetstate in which the vehicle 220 may find itself along that route. Putanother way, the graph-structure 300 defines a series of target statesin which the vehicle 220 may potentially find itself along the route.

To better illustrate this, in FIG. 3 , there is depicted a first vertex302 and a second vertex 304 of the graph-structure 300. The first vertex302 is connected to the second vertex 304 by an edge 350 of thegraph-structure 300. As it can be seen, the first vertex 302 and thesecond vertex 304 are two sequential vertices of the graph-structure300. Hence, the first vertex 302 defines a first target state 320 of thevehicle 220 along the route and the second vertex 304 defines a secondtarget state 340 of the vehicle 220 along the route that is sequentialto the first target state 320. The edge 350 is representative of atransition between the first target state 320 of the vehicle 220 and thesecond target state 340 of the vehicle 220.

With reference to FIG. 4 , there is depicted a bird-eye viewrepresentation 400 of the vehicle 220 being in two sequential targetstates along the route. For example, the vehicle 220 being in the firstone of the two sequential target states (e.g., the first target state320) is depicted via representation 402, while the vehicle 220 being inthe second one of the two sequential target states (e.g., the secondtarget state 340) is depicted via representation 404.

It is contemplated that a given vertex of the graph-structure 300 maydefine a respective target state of the vehicle 220 along the route in aform of vehicle state data. This means that the storage 250 storing thegraph-structure 300 is configured to store vehicle state data for eachvertex of the graph-structure 300, and which vehicle state datarepresents a respective target state of the vehicle 220 along the route.

The vehicle state data stored for a given vertex of the graph-structure300 may comprise a plurality of state values. For example, the storage250 may be configured to store for a respective vertex of the graphstructure 300 a respective plurality of state values which comprise atleast some of: a position value, a time value, a vehicle orientationvalue, a steering wheel position value, and the like.

It should be noted that the first one of the two sequential targetstates 320 of the vehicle 220 (see the representation 402) isrepresented by a first plurality of state values 412. The firstplurality of state values 412 may indicate a position of the vehicle 220at a first moment in time, a vehicle orientation of the vehicle 220 atthe first moment in time, a steering wheel position of the vehicle 220at the first moment in time, and the like.

Similarly, the second one of the two sequential target states 340 of thevehicle 220 (see the representation 404) is represented by a secondplurality of state values 414. The second plurality of state values 414may indicate a position of the vehicle 220 at a second moment in time(being sequential to the first moment in time), a vehicle orientation ofthe vehicle 220 at the second moment in time, a steering wheel positionof the vehicle 220 at the second moment in time, and the like.

Overall, it can be said that the storage 250 may be configured to storethe graph-structure 300 that defines a series of target states of thevehicle 220 along the route, or in other words, the storage 250 maystore vehicle state data for the vehicle 220 along the route, and wherethe state vehicle data for the vehicle 220 is indicative of vehiclepositions, vehicle orientations, and vehicle steering wheel positions atdifferent moments in time along the route.

As it will become apparent from the description herein further below,developers of the present technology have devised methods and processorsfor generating trajectories for the vehicle 220 for, in a sense,“transitioning” from (i) a given target state of the vehicle 220 in thegraph-structure 300 to (ii) a sequential target state of the vehicle 220in the graph-structure 300.

Furthermore, developers of the present technology have devised methodsand processors for generating “steering wheel control data” forcontrolling steering of the vehicle 220 during operation which allowsthe vehicle 220 to, in a sense, “transition” from (i) the given targetstate of the vehicle 220 in the graph-structure 300 to (ii) thesequential target state of the vehicle 220 in the graph-structure 300.

With reference to FIG. 5 , the storage 250 may also be configured tostore polynomial-generation data in a form of a table 500. As seen, thetable 500 comprises a state-transition column 502 and apolynomial-parameters column 504. For example, a second row 506 of thetable 500 includes a respective state-transition pair 508—that is, dataindicative of a transition from a first state 510 to a second state512—and a respective set of parameters 514.

Broadly speaking, the table 500 has been generated and stored in thestorage 250 such that the set of parameters 514 may be employed by theprocessor 110 to generate a given polynomial curve that represents aplurality of steering wheel positions of the vehicle 220 at respectivemoments in time such that a given vehicle (such as the vehicle 220, forexample), when steered in accordance with the plurality of steeringwheel positions, may transition from the first state 510 to the secondstate 512. Therefore, it can be said that the set of parameters 514 maybe used to generate, in a sense, a given “steering profile” thatrepresents a plurality of steering wheel positions at different momentsin time for allowing a given vehicle to transition from the first state510 to the second state 512.

It should be noted that the manner in which the processor 110 may beconfigured to generate/build a given polynomial curve based on a givenset of parameters (such as the set of parameters 514) is described ingreater detail in an article entitled “Motion Planning for AutonomousDriving with a Conformal Spatiotemporal Lattice”, authored by MatthewMcNaughton et al., the content of which is incorporated herein in byreference in its entirety.

In one embodiment, a given set of parameters stored in the table 500 maycomprise at least four parameters. In an other embodiment, the given setof parameters may comprise at least one parameter indicative of a totalamount of steering movement. In yet a further embodiment, the processor110 may build/generate a given polynomial curve as a polynomial functionof a third degree—for example, the processor 110 may use the given setof parameters as input to the polynomial function forgenerating/building the given polynomial curve.

In some embodiments of the present technology, it is contemplated thatthe given set of parameters retrieved from the table 500 may beindicative of a plurality of coefficients that are to be used by theprocessor 110 as input into the polynomial function forgenerating/building the given polynomic curve.

It should be noted that the polynomial-generation data in the table 500may be determined in a variety of ways. In one example, thepolynomial-generation data of the table 500 may be generated via a humandriver operating a given vehicle.

To better illustrate this, let it be assumed that a given vehicle(potentially the vehicle 220) operated by the human driver is associatedwith an electronic device (potentially implemented similarly to theelectronic device 210). When the human driver operates the givenvehicle, it can be said that the given vehicle is driven along ahuman-desired trajectory. This human-desired trajectory is created bythe human driver controlling inter alia the steering wheel of the givenvehicle. As the human driver operates the given vehicle, the givenelectronic device may be configured to capture operation data about thegiven vehicle. For example, the given electronic device may beconfigured to gather, for different moments in time during operation ofthe given vehicle, a plurality of values/parameters representative of,for example: positions of the given vehicle, orientations of the givenvehicle, steering wheel positions of the given vehicle, and so forth.This operation data represents information about operation of the givenvehicle when the given vehicle is driven along the human-desiredtrajectory.

The polynomial-generation data of the table 500 may be generated basedon this operation data gathered by the given electronic device. Forexample, based on the operation data gathered by the electronic device,the processor 110 may be configured to (i) determine a number ofsequential state pairs of the given vehicle during operation thereof bythe human driver, and (ii) for each one of the sequential state pairs,determine a respective steering profile representing a plurality ofsteering wheel positions of the given vehicle, which the human driverselected via her or his control of the steering wheel, that allowed thegiven vehicle to transition from a first state in the given state pairto a second state in the given state pair.

In this case, the respective steering profile for the given state pairrepresents different steering wheel positions that have been selected bythe human driver for transitioning from the first state in the givenpair to the second state in the given pair in accordance with ahuman-desired trajectory. As a result, information indicative of thisrespective steering profile may be stored in a form of a set ofparameters for a polynomial function that, when inputted with the set ofparameters, would generate a polynomial curve corresponding to therespective steering profile. This set of parameters for the respectivesteering profile may be stored in the table 500 in association with dataindicative of the state pair including the first state and the secondstate.

Overall, in some embodiments, it can be said that thepolynomial-generation data of the table 500 may be generated by (i)gathering operation data about the given vehicle driven in accordancewith the human-desired trajectory, (ii) determining different statepairs of the given vehicle during its operation in accordance with thehuman-desired trajectory, and (iii) determining respective sets ofparameters for different state pairs that are indicative of respectivesteering profiles that allowed the given vehicle to transition betweenthe respective state pairs in accordance with the human-desiredtrajectory.

In at least some embodiments of the present technology, the storage 250may be configured to store data representative of a Machine LearningAlgorithm (MLA) that the processor 110 is configured to execute.

Generally speaking, MLAs can learn from data. Also, MLAs can makepredictions on data. The MLAs are usually used to first build a modelbased on training inputs of data in order to then make data-drivenpredictions or decisions expressed as outputs, rather than followingstatic computer-readable instructions. The MLAs are commonly used asestimation models, ranking models, classification models and the like.

It should be understood that different types of the MLAs havingdifferent structures or topologies may be used for various tasks.

One particular type of MLAs includes Neural Networks (NNs). Generallyspeaking, a given NN consists of an interconnected group of artificial“neurons”, which process information using a connectionist approach tocomputation. NNs are used to model complex relationships between inputsand outputs (without actually knowing the relationships) or to findpatterns in data. NNs are first conditioned in a training phase in whichthey are provided with a known set of “inputs” and information foradapting the NN to generate appropriate outputs (for a given situationthat is being attempted to be modelled). During this training phase, thegiven NN adapts to the situation being learned and changes its structuresuch that the given NN will be able to provide reasonable predictedoutputs for given inputs in a new situation (based on what was learned).Thus rather than try to determine complex statistical arrangements ormathematical algorithms for a given situation; the given NN tries toprovide an “intuitive” answer based on a “feeling” for a situation.

NNs are commonly used in many such situations where it is only importantto know an output based on a given input, but exactly how that output isderived is of lesser importance or is unimportant. For example, NNs arecommonly used to optimize the distribution of web-traffic betweenservers and in data estimation, data processing, including filtering,clustering, vector embedding and the like.

In at least one embodiment of the present technology, the MLA may beimplemented as a Recurrent Neural Network (RNN). Broadly speaking, RNNsis a class of NNs where connections between nodes form a directed graphalong a temporal sequence. This allows a given RNN to, in a sense,“learn” and “exhibit” temporal dynamic behaviour. To that end, internalstates (memory) of a given RNN can be used to process sequences ofinputs. As it will become apparent from the description herein furtherbelow, developers of the present technology have realized that thisusage of internal states of RNNs for processing sequences of inputs maybe beneficial for making predictions, not only based on a current input,but also on at least one previous input.

To summarize, the implementation of a given MLA by the processor 110 canbe broadly categorized into two phases—a training phase and an in-usephase. First, the given MLA is trained in the training phase. Then, oncethe given MLA knows what data to expect as inputs and what data toprovide as outputs, the given MLA is actually run using in-use data inthe in-use phase. It is contemplated that, in some embodiments of thepresent technology, the MLA executable by the processor 110 may be oneor more suitable supervised, semi-supervised and unsupervised MLAs.

Processor

As previously alluded to, the processor 110 may be configured todetermine data for controlling steering of the vehicle 220. How theprocessor 110 may be configured to determine this data for controllingsteering of the vehicle 220 will now be described.

Let it be assumed that, as mentioned above, the processor 110 generatedthe graph-structure 300 and, hence, the series of target states of thevehicle 220 are generated for the given route. However, in addition tothis series of target states, the processor 110 may require additionaldata for controlling steering of the vehicle 220 so that the vehicle 220is able to transition from one target state in the series, to a secondtarget state in the series, in turn to a third target state in theseries, and so forth. Put another way, it is contemplated that theprocessor 110 may be configured to determine, for a given pair ofsequential target states in the graph-structure 300 such as the pairincluding the first target state 320 and the second target state 340,how the steering of the vehicle 220 should be controlled in order toarrive from the first target state 320 to the second target state 340.

How the processor 110 is configured to determine a given target steeringprofile representing a plurality of target steering positions atdifferent moment in time for allowing the vehicle 220 to transition from(i) the first target state 320 (see the representation 402 in FIG. 4 )to (ii) the second target state 340 (see the representation 404 in FIG.4 ) will now be described in greater details. However, it should benoted that the processor 110 may be configured to determine such atarget steering profile for any pair of two sequential target states inthe graph-structure 300 similarly to how the processor 110 is configuredto determine the given target steering profile for the pair ofsequential target states including (i) the first target state 320 (seethe representation 402 in FIG. 4 ) to (ii) the second target state 340(see the representation 404 in FIG. 4 ).

In some embodiments of the present technology, it is contemplated thatthe processor 110 may be configured to perform a search operation in thetable 500 depicted in FIG. 5 in order to identify a given set ofparameters that is associated with a given state pair that is a mostsimilar state pair amongst all state pairs in the table 500 to the pairincluding the first target state 320 and the second target state 340.For example, the search operation may be triggered in response toacquiring the vehicle state data associated with the first target state320 and the second target state 340.

As mentioned above, the first target state 320 is associated with thefirst plurality of state values 412 (vehicle state data) while thesecond target state 340 is associated with the second plurality of statevalues 414 (vehicle state data). As such, the processor 110 may performthe search in the table 500 by using the first plurality of state values412 (being vehicle state data for the first target state 320) and thesecond plurality of state values 414 (being vehicle state data for thesecond target state 340).

How the search operation is performed by the processor 110 is notparticularly limiting and can be implemented in any suitable manner fora given application. Nevertheless, once the search operation isperformed, the processor 110 may be configured to acquire a given set ofparameters associated with a given state pair that is a most similarstate pair amongst all state pairs in the table 500 to the pairincluding the first target state 320 and the second target state 340.

To better illustrate this, let it be assumed that the given state pairthat is a most similar state pair amongst all state pairs in the table500 to the pair including the first target state 320 and the secondtarget state 340 is the state pair 508 illustrated in FIGS. 5 and 6 . Itcan be said that, in this example, a transition between the first targetstate 320 and the second target state 340 is most similar to atransition between the first state 510 and the second state 512 than toany other transition amongst respective state pairs of the table 500.

Once the state pair 508 is identified as the most similar state pairamongst all state pairs in the table 500 to the pair including the firsttarget state 320 and the second target state 340, the processor 110 maybe configured to acquire the respective associated set of parameters514.

Once the set of parameters 514 is acquired, the processor 110 may beconfigured to generate/build, based on the set of parameters 514, apolynomial curve 602 illustrated via a graphical representation 600 inFIG. 6 . As seen, the graphical representation 600 includes two axes,namely a time axis identified as “T” axis, and a steering wheel positionaxis identified as “SWP” axis.

It should be noted that since the state pair 508 is the most similarstate pair in the table 500 to the pair including the first target state320 and the second target state 340, the polynomial curve 602 builtbased on the set of parameters 514 may be used as a best approximationof the polynomial curve to be used for transitioning from the firsttarget state 320 to the second target state 340.

It should be noted that the steering wheel positions are identified inaccordance with their angular position relative to a neural steeringwheel position of the steering wheel. For example, a given steeringwheel position of −60 corresponds to a given steering wheel positionwhere the steering wheel is rotated 60 degrees counter-clockwise fromthe neutral steering wheel position. In the same example, a givensteering wheel position of +60 corresponds to a given steering wheelposition where the steering wheel is rotated 60 degrees clockwise fromthe neutral steering wheel position.

It should be noted that the polynomial curve 602 represents a candidatesteering profile for the vehicle 220 for transitioning from the firsttarget state 320 to the second target state 340. Indeed, this candidatesteering profile represents a plurality of candidate steering wheelpositions for the vehicle 220 at different moments in time between (i)the moment in time associated with the first target state 320, and (ii)the moment in time associated with the second target state 340.

For example, the polynomial curve 602 begins at a starting moment intime 604 which corresponds to the moment in time associated with thefirst target state 320. Then, the polynomial curve 602 providesindications of candidate steering wheel positions at different momentsin time after the starting moment in time 604 and until an ending momentin time 606 that corresponds to the moment in time associated with thesecond target state 340.

It should be noted that developers of the present technology haverealized that, in some situations, a given candidate steering profile(given polynomial curve generated based on a given set of parameters)may include at least some candidate steering wheel positions that arenot physically possible or otherwise too dangerous to be used, in atleast some circumstances, during operation of the vehicle 220. Putanother way, the developers of the present technology have realized thatthe vehicle 220 may be associated with a pre-determined range ofsteering wheel positions that are either physically possible orotherwise safe to be used during operation of the vehicle 220 in a givensituation.

In some embodiments of the present technology, it is contemplated thatthe pre-determined range of steering wheel positions may be indicativeof a maximum amplitude of steering that the vehicle 220 is physicallyconfigured to perform or otherwise able to safely perform in a givensituation. Just as an example, the pre-determined range of steeringwheel positions may be [−900, +900]. In another example, thepre-determined range of steering wheel positions may be [−180, +180].

It is contemplated that in some embodiments of the present technology, agiven range of steering wheel positions may be pre-determined for arespective speed at which the vehicle 220 is currently travelling. Forexample, if the vehicle 220 is travelling at a relatively low speed(e.g., speed during parking manoeuvres), the pre-determined range may be[−900, +900]. In another example, if the vehicle 220 is travelling at arelatively high speed (e.g., speed on a road and/or highway), thepre-determine range may be [−180, +180]. In some embodiments, thepre-determined ranges for respective speeds of the vehicle 220 may bepre-computed and stored in the storage 250 for future use.

In the context of the present description, steering wheel positionsinside this pre-determined range may be referred to as “allowed steeringwheel positions” while steering wheel positions outside thispre-determined range may be referred to as “non-allowed steering wheelpositions”.

In some embodiments of the present technology, it is contemplated thatthe processor 110 may be configured to perform a trajectory simulationoperation based on the polynomial curve 602. In other words, theprocessor 110 may be configured to use the polynomial curve 602 forsimulating (e.g., generating) a candidate trajectory of the vehicle 220as if the vehicle 220 is steered in accordance with the plurality ofcandidate steering wheel positions of the candidate steering profilerepresented by the polynomial curve 602.

The purpose of the processor 110 simulating the candidate trajectory isto determine (i) whether or not the vehicle 220 will indeed transitionto the second target state 340 from the first target state 320 if thevehicle 220 is steered in accordance with the plurality of candidatesteering wheel positions of the polynomial curve 602, and (ii) whichtrajectory will the vehicle 220 undertake for transitioning to thesecond target state 340 from the first target 320 if the vehicle 220 issteered in accordance with the plurality of candidate steering wheelpositions of the polynomial curve 602.

How the processor 110 is configured to simulate the candidate trajectorybased on the polynomial curve 602 will now be described in greaterdetails with reference to FIGS. 7 and 8 .

In FIG. 7 , the graphical representation 600 is illustrated in greaterdetail with a pre-determined range of steering wheel positions 700. Asmentioned above, the polynomial curve 602 begins at the starting momentin time 604 which corresponds to the moment in time associated with thefirst target state 320. In FIG. 7 , the starting moment in timecorresponds to a moment t0. In addition to the moment t0, a plurality ofmoments is also depicted, namely: moments t2, t3, t4, t5, t6, t7, t8,t9, t10, and t11. As mentioned above, the polynomial curve 602 ends atthe ending moment in time 606 that corresponds to the moment in timeassociated with the second target state 340. In FIG. 7 , the endingmoment in time corresponds to the moment t11.

Therefore, it can be said, that the moments t1, t2, t3, t4, t5, t6, t7,t8, t9, and t10 are different moments in time between the startingmoment in time 604 and the ending moment in time 606 and for which thepolynomial curve 602 provides indications of candidate steering wheelpositions. As illustrated, the polynomial curve 602 provides indicationsof:

-   -   a candidate steering wheel position of 0 for the moment t0;    -   a candidate steering wheel position of +60 for the moment t1;    -   a candidate steering wheel position of −120 for the moment t2;    -   a candidate steering wheel position of +180 for the moment t3;    -   a candidate steering wheel position of +240 for the moment t4;    -   a candidate steering wheel position of +180 for the moment t5;    -   a candidate steering wheel position of +120 for the moment t6;    -   a candidate steering wheel position of +60 for the moment t7;    -   a candidate steering wheel position of −60 for the moment t8;    -   a candidate steering wheel position of −120 for the moment t9;    -   a candidate steering wheel position of −120 for the moment t10;        and    -   a candidate steering wheel position of −120 for the moment t11.

It goes without saying that the polynomial curve 602 may also provideindications of steering wheel positions for moments in time that are inbetween the moments t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, and t10,without departing from the scope of the present technology.

As mentioned above, also illustrated in FIG. 7 , is the pre-determinedrange 700 of steering wheel positions. As seen, the pre-determined range700 is [−180, +180] which means that, in this example, the allowedsteering wheel positions are steering wheel positions that fall insidethe [−180, +180] range.

As mentioned above, the processer 110 may be configured to generate agiven candidate trajectory for the vehicle 220 based on a givencandidate steering profile (e.g., a given polynomial curve). Asillustrated in FIG. 8 , the processor 110 may be configured to generatea candidate trajectory 800 for the vehicle 220 as if the vehicle 220 issteered in accordance with the plurality of candidate steering wheelpositions of the candidate steering profile represented by thepolynomial curve 602.

As it can be seen, the candidate trajectory 800 begins at the firsttarget state 320. During generation of the candidate trajectory 800, theprocessor 110 may be configured to generate a set of intermediarysimulated states 830 based on the plurality of candidate steering wheelpositions of the candidate steering profile represented by thepolynomial curve 602.

For example, based on the candidate steering wheel position of 0 for themoment t0, the processor 110 may be configured to generate a firstintermediary simulated state 810 which is indicative of a state of thevehicle 220 at the moment t1 as if the vehicle 220 is steered inaccordance with the candidate steering wheel position of 0 and graduallychanging to the candidate steering wheel position of +60 between themoment t0 and the moment in time t1.

In the same example, based on the candidate steering wheel position of+60 for the moment t1, the processor 110 may be configured to generate asecond intermediary simulated state 811 which is indicative of a stateof the vehicle 220 at the moment t2 as if the vehicle 220 is steered inaccordance with the candidate steering wheel position of +60 andgradually changing to the candidate steering wheel position of +120between the moment t1 and the moment in time t2.

Nevertheless, it should be noted that the second intermediary simulatedstate 811 is not generated solely based on the candidate steering wheelposition of +60 for the moment t1, but also based on the firstintermediary simulated state 810 of the vehicle 220 at the moment t1. Itshould be noted that this may be true for each intermediary simulatedstate in the plurality of intermediary simulated states 830—that is, agiven intermediary simulated state may depend on the candidate steeringwheel position for a previous target state and on the previous targetstate itself.

In the same example, based on the candidate steering wheel position of+120 for the moment t2, the processor 110 may be configured to generatea third intermediary simulated state 813 which is indicative of a stateof the vehicle 220 at the moment t3 as if the vehicle 220 is steered inaccordance with the candidate steering wheel position of +120 andgradually changing to the candidate steering wheel position of +180between the moment t2 and the moment in time t3.

It should be noted that the candidate steering wheel position of +180for the moment t3 is still inside the pre-determined range 700, andtherefore, is an allowed steering wheel position in this example.However, as it will now be described, once a given candidate steeringwheel position for a given moment in time is outside the pre-determinedrange 700, and therefore, is a non-allowed steering wheel position, thesimulation process or generation of a next intermediate target state maybe performed by the processor 110 in a different manner than for momentsin time associated with candidate steering wheel positions that areinside the pre-determined range 700.

In the same example, based on the candidate steering wheel position of+180 for the moment t3, the processor 110 may be configured to generatea fourth intermediary simulated state 814 which is indicative of a stateof the vehicle 220 at the moment t4 as if the vehicle 220 is steered inaccordance with the candidate steering wheel position of +180 betweenthe moment t3 and the moment in time t4, instead of generating thefourth intermediary simulated state 814 as if the vehicle 220 is steeredin accordance with the candidate steering wheel position of +180 andgradually changing to the candidate steering wheel position of +240between the moment t3 and the moment in time t4.

Therefore, in some embodiments of the present technology, it iscontemplated that when the candidate steering profile represents atleast one candidate steering wheel position that is a non-allowedsteering wheel position (e.g., outside the pre-determined range 700),the processor 110 may be configured to generate intermediary simulatedstates as if the vehicle 220 is steered in accordance with the pluralityof candidate steering wheel positions at the respective moments in time,and such that a closest allowed steering wheel position to thenon-allowed steering wheel position in the pre-determined range 700 ofsteering wheel positions is used instead of the non-allowed steeringwheel position.

Put another way, this means that the processor 110 may be configured touse a steering wheel position of +180 for generation of any intermediarysimulated state between the moment t3 and the moment t5.

Continuing with the same example, the processor 110 may be configured togenerate a fifth intermediary simulated state 815, which is indicativeof a state of the vehicle 220 at the moment t5 as if the vehicle 220 issteered in accordance with the candidate steering wheel position of +180between the moment t4 and the moment in time t5, instead of generatingthe fourth intermediary simulated state 815 as if the vehicle 220 issteered in accordance with the candidate steering wheel position of +240and gradually changing to the candidate steering wheel position of +180between the moment t4 and the moment in time t5.

As for the rest of the plurality of intermediary simulated states 830,namely intermediary simulated states 816, 817, 818, 819, 820, and afinal simulated state 821, they may be generated by the processor 110similarly to how the processor 110 is configured to generate any one ofthe first, second and third intermediary simulated states.

Also illustrated in FIG. 8 , is the second target state 340. However, itshould be noted that the candidate trajectory 800 ends at the moment t11at a final simulated state 821. Therefore, it can be said that there isan offset 850 between the second target state 340 and the finalsimulated state 821 at which the candidate trajectory 800 ends.

The offset 850 between the final simulated state 821 and the secondtarget state 340 may occur for different reasons. In one example, theoffset 850 may occur due to a non-exact match between the two sequentialtarget states and the pair of states 508. In an other example, theoffset 850 may occur due to a limitation of the candidate steering wheelpositions (e.g., limitation to +180 degrees) between the moment t3 andthe moment t5 during the simulation process.

Irrespective of a specific reason for the occurrence of the offset 850,the processor 110 may be configured to employ the offset 850 in order todetermine whether the candidate steering profile (e.g., the polynomialcurve 602) is to be selected as a target steering profile forcontrolling the steering of the vehicle 220 between the first targetstate 320 and the second target state 340.

In at least some embodiments, the processor 110 may be configured tocompare the offset 850 against a pre-determined threshold. Thepre-determined threshold may be determined in any suitable manner for agiven application. In some cases, if the offset 850 between the finalsimulated state 821 and the second target state 340 is within anacceptable offset margin from the second target state 340, the processor110 may select the candidate steering profile (e.g., the polynomialcurve 602) as the target steering profile for the vehicle 220 and usethe target steering profile for controlling steering of the vehicle 220.

It should be noted that if the polynomial curve 602 is selected as thetarget steering profile for the vehicle 220, the processor 110 maytrigger steering control of the vehicle 220 such that the vehicle 220 issteering in accordance with steering wheel positions that are limited toa value of +180 between the moments t3 and t4.

However, in other cases, if the offset 850 between the final simulatedstate 821 and the second target state 340 may happen to be outside theacceptable offset margin, the processor 110 may be configured to performan adjustment procedure. During the adjustment procedure, the processor110 may be configured to use the offset 850 for adjusting the set ofparameters 514, which is used to generate the polynomial curve 602, andthereby determine a set of adjusted parameters for building an adjustedpolynomial curve.

How the processor 110 is configured to use the offset 850 for adjustingthe set of parameters 514 and thereby determine the set of adjustedparameters is described in the article mentioned above and the contentof which is incorporated herein by reference in its entirety. Once theset of adjusted parameters are determined, the processor 110 may beconfigured to build the adjusted polynomial curve based on the set ofadjusted parameters, similarly to how the processor 110 is configured tobuild the polynomial curve 602 based on the set of parameters 514.

Similarly to what has been described above with respect to thepolynomial curve 602, the processor 110 may be configured to use theadjusted polynomial curve for simulating a second candidate trajectoryfor the vehicle 220 as if the vehicle 220 is steered in accordance withan adjusted steering profile represented by the adjusted polynomialcurve. Then, similarly to what has been descried above with respect tothe candidate trajectory 800, the processor 110 may be configured todetermine a second offset between the second target state 340 and asecond final simulated state of the second candidate trajectory.

If the second offset is below the pre-determined threshold, theprocessor 110 may select the adjusted candidate steering profile (e.g.,the adjusted polynomial curve) as the target steering profile and use itto control steering of the vehicle 220. If the second offset is abovethe pre-determined threshold, the processor 110 may be configured torepeat the adjustment procedure for the adjusted set of parameters,similarly to how the processor 110 is configured to perform theadjustment procedure for the set of parameters 514. Hence, it can besaid that the processor 110 may be configured to iteratively repeat theadjustment procedure until a given offset is below the pre-determinedthreshold.

Hence, during in-use, once the target steering profile is selected asdescribed above, the electronic device 210 may be configured to use thetarget steering profile in order to control operation of the vehicle220. More specifically, if the electronic device 210 determines that thevehicle 220 is currently in the first target state 320 and the vehicle220 is to transition to the second target state 340, the electronicdevice 210 may be configured to use the target steering profile asdetermined above to control steering of the vehicle 220 when the vehicle220 is in the first target state 320 and for allowing the vehicle 220 totransition to the second target state 340.

As mentioned above, in at least some embodiments, the processor 110 maybe configured to execute the MLA. In some embodiments, the MLA may betrained and used for predicting an in-use steering wheel position forthe vehicle 220 for a current in-use state of the vehicle 220 whiletaking into account that an in-use trajectory of the vehicle 220 is toend at the second one of the two sequential states in thegraph-structure 300. How the MLA may be trained and used to perform sucha prediction will now be described in turn.

Training and Using the MLA

With reference to FIG. 9 , broadly speaking, the processor 110 isconfigured to train the MLA based on a training trajectory 900. It iscontemplated that in at least some embodiments of the presenttechnology, the training trajectory 900 may be generated by theprocessor 110 (and potentially stored in the storage 250) similarly tohow the processor 110 is configured to generate the candidate trajectory800. In other embodiments, it is contemplated that the trainingtrajectory 900 may be gathered by an electronic device tracking ahuman-desired trajectory, as explained above.

More specifically, the processor 110 may be configured to generate aplurality of training data sets 980 based on the training trajectory 900and then train the MLA based on the plurality of training data sets 980.How the processor 110 is configured to generate the plurality oftraining data sets based on the training trajectory will now bedescribed.

As seen, in this case, the plurality of training data sets 980 for thetraining trajectory 900 includes four (4) training data sets in total,namely a first training data set 982, a second training data set 984, athird training data set 986, and a fourth training data set 988.

It should be noted that each training data set from the plurality oftraining data sets 980 includes a respective training input and arespective label. For example, the first training data set 982 includesa first training input 950 and a first label 952. In the same example,the second training data set 984 includes a second training input 954and a second label 956. In the same example, the third training data set986 includes a third training input 958 and a third label 960. In thesame example, the fourth training data set 988 includes a fourthtraining input 962 and a fourth label 964.

As seen in FIG. 9 , the training trajectory 900 comprises (i) a firsttarget state 902, (ii) a plurality of intermediary target statesincluding intermediary target states 904, 906, and 908, and (iii) thesecond target state 910. It should be noted that the training trajectory900 is associated with a plurality of actual steering wheel positions(similarly to how the candidate trajectory 800 is associated with theplurality of candidate steering wheel positions from the polynomialcurve 602) at different moments in time, such that at a given actualsteering wheel position at a given moment in time allows arriving from agiven target state of the training trajectory 900 to a sequential targetstate in the training trajectory 900.

In some embodiments of the present technology, it is contemplated that agiven training data set may be generated by the processor 110 based on(i) target states from the training trajectory 900 and (ii) theplurality of actual steering positions associated with the trainingtrajectory 900.

It should be noted that a given training input from the given trainingdata set includes data indicative of (i) a respective training state and(ii) a second target state 910, and where the respective training stateis one of (i) the first target state 902 and (ii) any one of theintermediary target states 904, 906, and 908.

For example, the first training input 950 includes data indicative of(i) the first target state 902 and (ii) the second target state 910. Itshould be noted that data indicative of a given target state may be in aform of a set of state values as described above. In this example, thesecond training input 954 includes data indicative of (i) theintermediary target state 904 and (ii) the second target state 910. Inthis example, the third training input 958 includes data indicative of(i) the intermediary target state 906 and (ii) the second target state910. In this example, the fourth training input 962 includes dataindicative of (i) the intermediary target state 908 and (ii) the secondtarget state 910.

It should be noted that the processor 110 employs information indicativeof target states from the training trajectory 900 for generating thetraining inputs from the plurality of training data sets 980. However,it should also be noted that the processor 110 employs informationindicative of the plurality of actual steering wheel positionsassociated with the training trajectory 900 for generating therespective labels from the plurality of training data sets 980.

For example, the first label 952 is indicative of the actual steeringwheel position(s) at respective moment(s) in time for arriving from thefirst target state to the intermediary target state 904. In the sameexample, the second label 956 is indicative of the actual steering wheelposition(s) at respective moment(s) in time for arriving from theintermediary target state 904 to the intermediary target state 906. Inthe same example, the third label 960 is indicative of the actualsteering wheel position(s) at respective moment(s) in time for arrivingfrom the intermediary target state 906 to the intermediary target state908. In the same example, the fourth label 960 is indicative of theactual steering wheel position(s) at respective moment(s) in time forarriving from the intermediary target state 908 to the second targetstate 910.

Overall, a given training data set comprises a given training input anda given label. The given input is indicative of (i) a respective targetstate (either the first target state 902 or a given intermediary targetstate) from the training trajectory 900 and the second target state 910being a last target state of the training trajectory 900 (since thetraining trajectory 900 ends with the second target state 910). Thegiven label is indicative of the actual steering wheel position(s) atrespective moment(s) in time for arriving from the respective targetstate (either the first target state 902 or a given intermediary targetstate) to a sequential target states from the training trajectory 900.

How a given training data set is used by the processor 110 to train theMLA will now be described. To better illustrate this, let's take theexample of the first training data set 982. The processor 110 isconfigured to input the first training data set 982 into the MLA. Putanother way, the processor 110 may be configured to provide the firsttraining input 950 of the first training data set 982 to the MLA, whichis configured to determine a predicted steering wheel position(s) forarriving from the first target state at the respective moment in time tothe sequential target state of the training trajectory 900 while takinginto account that the training trajectory 900 is to end with the secondtarget state 910. In other words, the MLA may be configured to generatean output indicative of predicted steering wheel position(s) forarriving from the first target state at the respective moment in time tothe sequential target state of the training trajectory 900 while takinginto account that the training trajectory 900 is to end with the secondtarget state 910. The processor 110 may also be configured to comparethis output of the MLA against the first label 982 of the first trainingdata set 982. During the comparison, the processor 110 may be configuredto determine a difference between these predicted steering wheelposition(s) (outputted by the MLA) for the first target state 902 andthe actual steering wheel position(s) for the first target state 902.

Once the processor 110 determines the difference between the predictedsteering wheel position(s) for the first target state 902 (output of theMLA) and the actual steering wheel position(s) for the first targetstate (first label 952), the processor 110 may be configured to trainthe MLA based on the difference. The processor 110 may so-train the MLAto predict in-use steering wheel position(s) for the vehicle 220 for acurrent in-use state of the vehicle 220 while taking into account thatan in-use trajectory of the vehicle 220 is to end at a second in-usetarget state.

It should also be noted that in at least some embodiments of the presenttechnology, the processor 110 may be configured to iteratively inputtingrespective training data sets from the plurality of training data sets980 into the MLA for determining respective predicted steering wheelposition(s) for arriving from the respective training target state to asequential target state while taking into account that the trainingtrajectory 900 is to end at the second target state 910.

Hence, it is contemplated that in these embodiments, the processor 110may be configured to train the MLA based on differences between therespective predicted steering wheel positions and respective actualsteering wheel positions that are provided to the MLA as the respectivelabels of the plurality of training data sets 980.

It is contemplated that in these embodiments, the MLA may be a RNN-typeMLA having internal memory states.

In at least some embodiments of the present technology, it can be saidthat the plurality of target states of the training trajectory 900 havebeen selected for avoiding an obstacle. To better illustrate this, letit be assumed that the training trajectory 900 is a given human-desiredtrajectory selected by the human operator during operation of a givenvehicle. It should be noted that the human operator may have selectedthe training trajectory 900 for avoiding a given obstacle on the roadduring operation of the given vehicle. In such cases, informationindicative of the position of the obstacle relative to the given vehicleoperated by the human operator may have been gathered during operationof the vehicle.

It is therefore contemplated that in cases where the training trajectoryhas been gathered in association with information indicative of aposition of a given obstacle, the position of the given obstacle mayalso be inputted into the MLA for training purposes. Hence, it can besaid that the MLA may, in a sense, “learn” the association betweenpositions of obstacles on the road and in-use steering wheel positionsthat the MLA is to predict in order to avoid obstacles on the road.

Optionally, in addition to information indicative of a position of agiven obstacle, the MLA mays be inputted during the training phase withinformation indicative a position of a center of a lane on which thetraining trajectory is present. Hence, it can be said that the MLA may,in a sense, also “learn” the association between the position of centreof the lane and in-use steering wheel positions that the MLA is topredict in order to follow as much as possible the centre of the lane.

During in-use, the electronic device 210 may be configured to employ theMLA to determine steering wheel positions for transitioning from thefirst target state 320 to the second target state 340. With reference toFIG. 11 , there is depicted a representation 1000 of the in-use phase ofthe MLA. As it will become apparent from the description herein furtherbelow, during the in-use phase of the MLA, the MLA is employed by theprocessor 110 in order to incrementally determine steering wheelpositions for the vehicle 220 for transitioning between the first targetstate 320 and the second target state 340.

For example, as seen in FIG. 10 , the representation 1000 of the in-usephase is depicted as including at least four incremental steps, namely:a first incremental step 1002, a second incremental step 1004, a thirdincremental step 1006 and a fourth incremental step 1008. During arespective incremental step, the processor 110 is configured to inputdata into the MLA for determining a steering wheel position(s) for thevehicle 220 until a next incremental step of the in-use phase, whiletaking into account that, at the end of the in-use phase, the vehicle220 is to transition to the second target state 340.

To better illustrate this, let it be assumed that the processor 110determines that the vehicle 220 is currently in the first target state320 and the vehicle 220 is to transition to the second target state 340.In this case, the processor 110 may be configured to use the MLA fordetermining steering wheel positions for transitioning from the firsttarget state 320 to the second target state 340.

During the first incremental step 1002, the processor 110 may beconfigured to input (i) vehicle state data associated with the firsttarget state 320 and (ii) the vehicle state data associated with thesecond target state 340. In such a case, the MLA is configured to outputa first steering wheel position(s) for transitioning to a first in-useincremental state 1012 between the first target state 320 and the secondtarget state 340, while taking into account that the vehicle 220 is totransition to the second target state 340 at the end of the in-use phaseof the MLA. As such, the first steering wheel position(s) provided bythe MLA in response to a first input to the electronic device 210 is fortransitioning from the first target state 320 to the second target state340 via the first in-use intermediary state 1012.

During the second incremental step 1004, the processor 110 may beconfigured to input into the MLA (i) vehicle state data of the firstin-use incremental state 1012 and (ii) the vehicle state data of thesecond target state 340. In such a case, the MLA is configured to outputa second steering wheel position(s) for transitioning to a second in-useincremental state 1014 between the first target state 320 and the secondtarget state 340. As such, recalling that the MLA provided the firststeering wheel position(s) during the first incremental step 1002, theMLA is configured to provide during the second incremental step 1004 thesecond steering wheel position(s) for transitioning from the firsttarget state 320 to the second target state 340 via the first in-useincremental state 1012 and the second in-use incremental state 1014.

During the third incremental step 1006, the processor 110 may beconfigured to input into the MLA (i) vehicle state data of the secondin-use incremental state 1014 and (ii) the vehicle state data of thesecond target state 340. In such a case, the MLA is configured to outputa third steering wheel position(s) for transitioning to a third in-useincremental state 1016 between the first target state 320 and the secondtarget state 340. As such, recalling that the MLA provided the firststeering wheel position(s) during the first incremental step 1002 andthe second steering wheel position(s) during the second incremental step1004, the MLA is configured to provide during the third incremental step1006 the third steering wheel position(s) for transitioning from thefirst target state 320 to the second target state 340 via the firstin-use incremental state 1012, the second in-use incremental state 1014,and the third in-use incremental state 1016.

It should be noted that the fourth incremental step 1008 may beperformed in a similar manner for transitioning to a fourth in-useincremental state 1018 to how the first, second and third incrementalsteps 1002, 1004, and 1006 are performed by the processor 110 employingthe MLA. It should be noted that a number of incremental steps of thein-use phase of the MLA may vary based on inter alia a givenimplementation of the present technology. Nevertheless, it can be saidthat during the in-use phase of the MLA, the processor 110 may employthe MLA in order to incrementally determine steering wheel positions forthe vehicle 220 in order to transition from the first target state 320to the second target state 340 via one or more in-use incremental statesin between the first target state 320 and the second target state 340.

With reference to FIG. 11 , there is depicted a scheme-block diagram ofa method 1100 of controlling steering of a SDC, such as the vehicle 220,for example. Various steps of the method 1100 will now be described ingreater details herein further below.

Step 1102: Acquiring SDC State Data Associated with Two SequentialVertices in a Graph-Structure

The method 1100 begins at step 1102 with the processor 110 configured toacquire from a memory the SDC state data associated with two sequentialvertices in the graph-structure 300. For example, the processor 110 maybe configured to acquire the SDC state data associated with the firstvertex 302 defining the first target state 320 of the vehicle 220 andwith the second vertex 304 defining the second target state 340 of thevehicle 220.

In some embodiments of the present technology, the processor 110 may beconfigured, prior to performing the step 1102, to generate thegraph-structure 300 and for the route the vehicle 220 is to undertake.The processor 110 may also be configured to store it in the storage 250and/or other memory (prior to performing the step 1102). In someembodiments, the memory may be a memory of a remote server such as theserver 235 of FIG. 2 for example.

It is contemplated that the SDC state data associated with a given stateof the SDC (and a given vertex of the graph-structure 300) may comprisea plurality of state values. In some embodiments, the plurality of statevalues for a given vertex of the graph-structure 300 (a given state ofthe SDC) may comprise at least a position value, a time value, a vehicleorientation value, and a steering wheel position value.

It is contemplated that the storage 350 may be configured to store theplurality of state values in association with a respective state of theSDC and, hence, in association with a respective vertex of thegraph-structure 300.

Step 1104: Using the SDC State Data for Acquiring a Set of Parametersfor Building a Polynomial Curve

The method 1100 continues to step 1104 with the processor 110 beingconfigured to using the SDC state data acquired during the step 1102 foracquiring a given set of parameters for building a given polynomialcurve.

For example, the processor 110 may be configured to use the vehiclestate data associated with the first target state 320 and the secondtarget state 340 in order to perform a search operation in the table 500as explained above.

How the search operation is performed by the processor 110 is notparticularly limiting and can be implemented in any suitable manner fora given application. Nevertheless, once the search operation isperformed, the processor 110 may be configured to acquire a given set ofparameters associated with a given state pair that is a most similarstate pair amongst all state pairs in the table 500 to the pairincluding the first target state 320 and the second target state 340.

As explained above, let it be assumed that the given state pair that isthe most similar state pair amongst all state pairs in the table 500 tothe pair including the first target state 320 and the second targetstate 340 is the state pair 508 illustrated in FIGS. 5 and 6 . It can besaid that, in this example, a transition between the first target state320 and the second target state 340 is most similar to a transitionbetween the first state 510 and the second state 512 than to any othertransition amongst respective state pairs of the table 500.

Once the state pair 508 is identified as the most similar state pairamongst all state pairs in the table 500 to the pair including the firsttarget state 320 and the second target state 340, the processor 110 maybe configured to acquire the respectively associated set of parameters514.

Once the set of parameters 514 is acquired, the processor 110 may beconfigured to generate/build the polynomial curve 602 based on the setof parameters 514, as explained above.

It should be noted that since the state pair 508 is the most similarstate pair in the table 500 to the pair including the first target state320 and the second target state 340, the polynomial curve 602 builtbased on the set of parameters 514 may be used as a best approximationof the polynomial curve to be used for transitioning from the firsttarget state 320 to the second target state 340.

It is contemplated that the set of parameters 514 may comprise at leastfour parameters. Optionally, the set of parameters 514 may comprise atleast one parameter being indicative of a total amount of steeringmovement. Also, it is contemplated that the polynomial curve 602 may bebuilt by the processor 110 as a polynomial function of a third degree.

It should be noted that the polynomial curve 602 is representative ofthe candidate steering profile of the vehicle 220 for attempting totransition from the first target state 320 to the second target state340. As explained above, the candidate steering profile represents theplurality of candidate steering wheel positions for the vehicle 220 atrespective moments in time between (i) the moment in time associatedwith the first target state 320 and (ii) the moment in time associatedwith the second target state 340.

Also, as previously alluded to, at least one candidate steering wheelposition from the plurality of candidate steering wheel positions of thepolynomial curve 602 may be a non-allowed steering wheel position, wherethe non-allowed steering wheel position is outside the pre-determinedrange 700 of steering wheel positions of the vehicle 220.

Step 1106: Using the Polynomial Curve for Simulating a CandidateTrajectory of the SDC

The method 1100 continues to step 1106 with the processor 110 configuredto use the polynomial curve 602 for simulating the candidate trajectory800 (see FIG. 8 ) of the vehicle 220 as if the vehicle 220 is steered inaccordance with the plurality of candidate steering wheel positions ofthe polynomial curve 602 at the respective moments in time, and suchthat a closest allowed steering wheel position to the non-allowedsteering wheel position (from the polynomial curve 602) in thepre-determined range of steering wheel positions is used instead of thenon-allowed steering wheel position.

As mentioned above, once a given candidate steering wheel position for agiven moment in time (from the candidate steering profile represented bythe polynomial curve 602) is outside the pre-determined range 700, andtherefore, is a non-allowed steering wheel position, the simulationprocess or generation of a next intermediate target state may beperformed by the processor 110 in a different manner than for moments intime associated with candidate steering wheel positions that are insidethe pre-determined range 700.

With reference to FIGS. 7 and 8 , based on the candidate steering wheelposition of +180 for the moment t3, the processor 110 may be configuredto generate the fourth intermediary simulated state 814 which isindicative of a state of the vehicle 220 at the moment t4 as if thevehicle 220 is steered in accordance with the candidate steering wheelposition of +180 between the moment t3 and the moment in time t4,instead of generating the fourth intermediary simulated state 814 as ifthe vehicle 220 is steered in accordance with the candidate steeringwheel position of +180 and gradually changing to the candidate steeringwheel position of +240 between the moment t3 and the moment in time t4.

Therefore, in some embodiments of the present technology, it iscontemplated that when the candidate steering profile represents atleast one candidate steering wheel position that is a non-allowedsteering wheel position (e.g., outside the pre-determined range 700),the processor 110 may be configured to generate intermediary simulatedstates as if the vehicle 220 is steered in accordance with the pluralityof candidate steering wheel positions at the respective moments in time,and such that a closest allowed steering wheel position to thenon-allowed steering wheel position in the pre-determined range 700 ofsteering wheel positions is used instead of the non-allowed steeringwheel position.

It should be noted that the candidate trajectory 800 that is simulatedby the processor 110 based on the polynomial curve 602, begins at thefirst target state 320 and terminates at the simulated state 821. Insome embodiments, it is contemplated that the pre-determined range 700of steering wheel positions may be indicative of a maximum amplitude ofsteering that the vehicle 220 is physically configured to perform.

Step 1108: Determining an Offset Between the Simulated State of the SDCand the Second Target State of the SDC

The method 1100 continues to step 1108 with the processor 110 configuredto determine the offset 850 between the simulated state 821 and thesecond target state 340. As mentioned above, the offset 850 between thefinal simulated state 821 and the second target state 340 may occur fordifferent reasons. In one example, the offset 850 may occur due to anon-exact match between the two sequential target states (the firsttarget state 320 and the second target state 340) and the pair of states508. In an other example, the offset 850 may occur due to a limitationof the candidate steering wheel positions (e.g., limitation to +180degrees) between the moment t3 and the moment t5 during the simulationprocess.

Irrespective of a specific reason for the occurrence of the offset 850,the processor 110 may be configured to employ the offset 850 in order todetermine whether the candidate steering profile (e.g., the polynomialcurve 602) is to be selected as a target steering profile forcontrolling the steering of the vehicle 220 between the first targetstate 320 and the second target state 340.

In at least some embodiments, the processor 110 may be configured tocompare the offset 850 against a pre-determined threshold. Thepre-determined threshold may be determined in any suitable manner for agiven application. In some cases, if the offset 850 between the finalsimulated state 821 and the second target state 340 is within anacceptable offset margin from the second target state 340, the processor110 may select the candidate steering profile (e.g., the polynomialcurve 602) as the target steering profile for the vehicle 220 and usethe target steering profile for controlling steering of the vehicle 220.

Step 1110: In Response to the Offset being Below a Pre-DeterminedThreshold, Selecting the Candidate Steering Profile as a Target SteeringProfile of the SDC

The method 1100 continues to step 1110 with the processor 110 configuredto, in response to the offset 850 being below the pre-determinedthreshold, select the candidate steering profile (represented by thepolynomial curve 602) as a given target steering profile of the vehicle220 for transitioning between the first target state 320 and the secondtarget state 340.

It should be noted that if the polynomial curve 602 is selected as thetarget steering profile for the vehicle 220, the processor 110 maytrigger steering control of the vehicle 220 such that the vehicle 220 issteering in accordance with steering wheel positions that are limited toa value of +180 between the moments t3 and t4.

However, in other cases, if the offset 850 between the final simulatedstate 821 and the second target state 340 may happen to be outside theacceptable offset margin, the processor 110 may be configured to performan adjustment procedure. During the adjustment procedure, the processor110 may be configured to use the offset 850 for adjusting the set ofparameters 514, which is used to generate the polynomial curve 602, andthereby determine a set of adjusted parameters for building an adjustedpolynomial curve.

How the processor 110 is configured to use the offset 850 for adjustingthe set of parameters 514 and thereby determine the set of adjustedparameters is described in the article mentioned above and the contentof which is incorporated herein by reference in its entirety. Once theset of adjusted parameters are determined, the processor 110 may beconfigured to build the adjusted polynomial curve based on the set ofadjusted parameters, similarly to how the processor 110 is configured tobuild the polynomial curve 602 based on the set of parameters 514.

Similarly to what has been described above with respect to thepolynomial curve 602, the processor 110 may be configured to use theadjusted polynomial curve for simulating a second candidate trajectoryfor the vehicle 220 as if the vehicle 220 is steered in accordance withan adjusted steering profile represented by the adjusted polynomialcurve. Then, similarly to what has been descried above with respect tothe candidate trajectory 800, the processor 110 may be configured todetermine a second offset between the second target state 340 and asecond final simulated state of the second candidate trajectory.

If the second offset is below the pre-determined threshold, theprocessor 110 may select the adjusted candidate steering profile (e.g.,the adjusted polynomial curve) as the target steering profile and use itto control steering of the vehicle 220. If the second offset is abovethe pre-determined threshold, the processor 110 may be configured torepeat the adjustment procedure for the adjusted set of parameters,similarly to how the processor 110 is configured to perform theadjustment procedure for the set of parameters 514. Hence, it can besaid that the processor 110 may be configured to iteratively repeat theadjustment procedure until a given offset is below the pre-determinedthreshold.

Step 1112: Using the Target Steering Profile of the SDC for ControllingSteering of the SDC when the SDC is in the First Target State

The method 1100 continues to step 1112 with the processor 110 configuredto use the target steering profile of the vehicle 220 for controllingsteering of the vehicle 220 when the vehicle 220 is in the first targetstate 320.

For example, if the candidate steering profile represented by thepolynomial curve 602 is selected as the target steering profile, theprocessor 110 may be configured to use the polynomial curve 602 in orderto control steering of the vehicle 220 when the vehicle 220 is in thefirst target state 320.

In another example, if the adjusted candidate steering profilerepresented by the adjusted polynomial curve (built as a result of theadjustment procedure mentioned above) is selected as the target steeringprofile, the processor 110 may be configured to use the adjustedpolynomial curve 602 in order to control steering of the vehicle 220when the vehicle 220 is in the first target state 320.

In some embodiments of the present technology, it is also contemplatedthat the processor 110 may be configured to use (i) the first targetstate 320 (for example, vehicle state data associated with the firsttarget state 320), (ii) the second target state (for example, vehiclestate data associated with the second target state 340), and (iii) thetarget steering profile of the vehicle 220 (represented by one of thepolynomial curve 602 and any one of a plurality of potential adjustedpolynomial curves) to train the MLA, as mentioned above, to predict anin-use steering wheel position for the vehicle 220 for a current in-usestate of the vehicle 220 while taking into account that an in-usetrajectory of the vehicle 220 is to end at a second in-use target state.

It should be expressly understood that not all technical effectsmentioned herein need to be enjoyed in each and every embodiment of thepresent technology.

Modifications and improvements to the above-described implementations ofthe present technology may become apparent to those skilled in the art.The foregoing description is intended to be exemplary rather thanlimiting. The scope of the present technology is therefore intended tobe limited solely by the scope of the appended claims.

1. A computer-implementable method of training a Machine LearningAlgorithm (MLA) for predicting steering wheel positions for controllingsteering of a Self-Driving Car (SDC), the method comprising: acquiring aplurality of training data sets associated with a training trajectory ofthe SDC, the training trajectory having a plurality of target states ofthe SDC, the plurality of target states includes (i) a first targetstate of the SDC, (ii) a set of intermediary target states, and (iii) asecond target state of the SDC, the target trajectory (i) beginning withthe SDC being in the first target state, (ii) continuing with the SDCbeing sequentially in the set of intermediary target states, and (iii)ending with the SDC being in the second target state, the trainingtrajectory being associated with a plurality of actual steering wheelpositions at different moments in time, a given actual steering wheelposition at a given moment in time for arriving from a given targetstate of the training trajectory to a sequential target state of thetraining trajectory, a given one of the plurality of training data setsincluding (i) a training input and (ii) a respective label, the traininginput being indicative of (i) a training target state and (ii) thesecond target state,  the training target state being at least one of(i) the first target state and (ii) one of the plurality of intermediarytarget states,  the respective label being indicative of the actualsteering wheel position at a respective moment in time for arriving fromthe training target state to the sequential target state of the trainingtrajectory; inputting the given training data set into the MLA fordetermining a predicted steering wheel position for arriving from thetraining target state at the respective moment in time to the sequentialtarget state while taking into account that the training trajectory isto end with the second target state; determining a difference betweenthe predicted steering wheel position for the training target state andthe actual steering wheel position for the training target state; andtraining the MLA based on the difference to predict an in-use steeringwheel position for the SDC for a current in-use state of the SDC whiletaking into account that an in-use trajectory of the SDC is to end at asecond in-use target state.
 2. The method of claim 1, wherein: theinputting comprises iteratively inputting respective training data setsfrom the plurality of training data sets into the MLA for determiningrespective predicted steering wheel positions; and wherein the trainingcomprises iteratively training the MLA based on differences between therespective predicted steering wheel positions and respective actualsteering wheel positions.
 3. The method of claim 1, wherein theplurality of actual steering wheel positions associated with thetraining trajectory are in a form of a steering profile for the trainingtrajectory, the steering profile having been built as a polynomial curverepresentative of a given steering profile of the SDC that allows theSDC to transition from the first target state to the second targetstate.
 4. A system for training a Machine Learning Algorithm (MLA) forpredicting steering wheel positions for controlling steering of aSelf-Driving Car (SDC), the system comprising at least one processor andat least one non-transitory computer-readable memory comprisinginstructions that, when executed by the at least one processor, causethe system to: acquire a plurality of training data sets associated witha training trajectory of the SDC, the training trajectory having aplurality of target states of the SDC, the plurality of target statesincludes (i) a first target state of the SDC, (ii) a set of intermediarytarget states, and (iii) a second target state of the SDC, the targettrajectory (i) beginning with the SDC being in the first target state,(ii) continuing with the SDC being sequentially in the set ofintermediary target states, and (iii) ending with the SDC being in thesecond target state, the training trajectory being associated with aplurality of actual steering wheel positions at different moments intime, a given actual steering wheel position at a given moment in timefor arriving from a given target state of the training trajectory to asequential target state of the training trajectory, a given one of theplurality of training data sets including (i) a training input and (ii)a respective label, the training input being indicative of (i) atraining target state and (ii) the second target state,  the trainingtarget state being at least one of (i) the first target state and (ii)one of the plurality of intermediary target states,  the respectivelabel being indicative of the actual steering wheel position at arespective moment in time for arriving from the training target state tothe sequential target state of the training trajectory; input the giventraining data set into the MLA for determining a predicted steeringwheel position for arriving from the training target state at therespective moment in time to the sequential target state while takinginto account that the training trajectory is to end with the secondtarget state; determine a difference between the predicted steeringwheel position for the training target state and the actual steeringwheel position for the training target state; and train the MLA based onthe difference to predict an in-use steering wheel position for the SDCfor a current in-use state of the SDC while taking into account that anin-use trajectory of the SDC is to end at a second in-use target state.